#!/bin/bash

# 检查是否提供了字体列表文件参数
if [ $# -ne 1 ]; then
    echo "用法: $0 <字体列表文件>"
    echo "例如: $0 font_list.txt"
    exit 1
fi

# 获取字体列表文件路径
FONT_LIST="$1"

# 检查字体列表文件是否存在
if [ ! -f "$FONT_LIST" ]; then
    echo "错误: 字体列表文件 '$FONT_LIST' 不存在"
    exit 1
fi

# 检查系统是否有fc-cache命令
if ! command -v fc-cache &> /dev/null; then
    echo "错误: 系统中未找到 fc-cache 命令，请确保已安装 fontconfig 包"
    exit 1
fi

echo "开始同步字体..."

# 创建用户字体目录（如果不存在）
USER_FONT_DIR="$HOME/.local/share/fonts"
mkdir -p "$USER_FONT_DIR"

SYNCED_COUNT=0
FAILED_COUNT=0

# 逐行读取字体列表文件
while IFS= read -r font_path; do
    # 跳过空行
    if [ -z "$font_path" ]; then
        continue
    fi
    
    # 检查源字体文件是否存在
    if [ ! -f "$font_path" ]; then
        echo "警告: 字体文件不存在: $font_path"
        ((FAILED_COUNT++))
        continue
    fi
    
    # 获取文件名
    font_filename=$(basename "$font_path")
    target_path="$USER_FONT_DIR/$font_filename"
    
    # 如果目标文件已存在，检查是否需要更新
    if [ -f "$target_path" ]; then
        if cmp -s "$font_path" "$target_path"; then
            echo "跳过 (已存在且相同): $font_filename"
            continue
        else
            echo "更新: $font_filename"
        fi
    else
        echo "复制: $font_filename"
    fi
    
    # 复制字体文件
    if cp "$font_path" "$target_path"; then
        ((SYNCED_COUNT++))
    else
        echo "错误: 无法复制 $font_path"
        ((FAILED_COUNT++))
    fi
done < "$FONT_LIST"

# 更新字体缓存
echo "正在更新字体缓存..."
if fc-cache -fv; then
    echo "字体缓存更新成功"
else
    echo "警告: 字体缓存更新失败"
fi

echo "同步完成: 成功 $SYNCED_COUNT 个, 失败 $FAILED_COUNT 个"